Modern multi-core processors have multiple pipelines to run multiple applications and as a result often improve performance for a system simultaneously running multiple tasks. Unfortunately, these multi-core processors also require substantially more power and use more area than a comparable single pipeline processor.
Prior art single pipeline processors may allow multithread processing by employing an operating system to manage hardware resource usage and thread switching. However, a significant performance penalty is incurred each time the processor changes threads.
Although processing multiple threads on a single processor core is desirable, in certain situations it may be necessary or desirable to disable one or more of the threads. For example, it may be useful to disable one or more threads while debugging and performing other testing on a multithread system. In another situation, an application may require, or may perform more optimally, using less than all available threads.
Additionally, in order for the thread to perform more optimally, methods and systems are needed for scheduling of threads within a pipeline processor to help ensure fairness while helping prevent rogue behavior.